/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.ups.cidi.siia.plamdep.webcrawler;

import java.io.File;
import java.util.List;

import ec.edu.ups.cidi.siia.plamdep.configuracion.ConfiguracionConexionWeb;
import ec.edu.ups.cidi.siia.plamdep.interfaces.IWebCrawler;
import ec.edu.ups.cidi.siia.plamdep.interfaces.IDocumentoCargado;
import ec.edu.ups.cidi.siia.plamdep.modelo.webcrawler.Bibliografia;
import ec.edu.ups.cidi.siia.plamdep.modelo.webcrawler.Pagina;
import ec.edu.ups.cidi.siia.plamdep.utils.Log;
import ec.edu.ups.cidi.siia.plamdep.webcrawler.descarga.DescargarContenido;

/**
 *
 * @author Usuario
 */
public class WebCrawler implements IWebCrawler
{
    
    boolean alternar=false;
    		
    private IDocumentoCargado lector=null;
    private Busqueda buscador=new Busqueda();
    ConfiguracionConexionWeb conf=new ConfiguracionConexionWeb();
    private String urlDescargar;
    
    public List<Bibliografia> buscar(String tema) 
    {
        if(ConfiguracionConexionWeb.webProxy)
          if(alternar==true)alternar=false;
          else alternar=true;
        else
        	alternar=false;
        
        return buscador.buscar(tema.replace("\n", ""),alternar);
    }

    
    
    public Pagina descargarContenido(String url) 
    {
        Pagina r=new Pagina();
        DescargarContenido downloader=new DescargarContenido(url);
        String cont=downloader.getContenido();
        if(cont.matches("^temp/[0-9]+\\.[a-z]{3,4}$"))
        {
            String ruta=cont;
            try{
            if(lector!=null)
            {    
                lector= lector.getIntancia(ruta);
                cont=lector.getContenido();
                System.gc();
                File f=new File(ruta);
                boolean b=f.delete();
                Log.log(null,Log.MOD_WEBCRAWLER,Log.LEVEL_MSG, WebCrawler.class,"borrando archivo: "+ruta+"    "+b);
                
            }
            }catch(Exception e)
            {
            	Log.log(e,Log.MOD_WEBCRAWLER,Log.LEVEL_ERROR, WebCrawler.class,"Error al leer archivo");
            	
            }
        }
        r.setLink(url);
        r.setContenido(cont);
        
        return  r;
    }

    
    public void setCargaDocumentos(IDocumentoCargado lector)
    {
        this.lector=lector;
    }

    /**
     * URL a descargar
     * @param urlDescargar
     */
    public void setUrlDescargar(String urlDescargar) {	this.urlDescargar = urlDescargar;}
	public String getUrlDescargar() {	return urlDescargar;	}
	
    public Pagina descargarContenido()
    {
    	return this.descargarContenido(urlDescargar);
    	
    }
}
